﻿using System;

namespace EnumApplication
{
    class Program
    {
        [Flags]
        public enum Days
        {
            None = 0,
            Sunday = 0x01,      //0000 0001
            Monday = 0x02,      //0000 0010
            Tuesday = 0x04,     //0000 0100
            Wednesday = 0x08,   //0000 1000
            Thursday = 0x10,    //0001 0000
            Friday = 0x20,      //0010 0000
            Saturday = 0x40,    //0100 0000
            Weekend = Sunday | Saturday,    //0100 0001
            Workdays = Monday | Tuesday | Wednesday | Thursday | Friday, //0011 1110
        }
        /*
为了让位标志枚举的值能够组合，所有值都必须是2的幂。因为组合多个值时，必须能确定结果为哪个离散值。

在简单枚举中，可以让名称None或最常用默认名称对应于0，但标志枚举要求0对应于名称None,这个值意味着所有标志都未设置。
         */
        static void Main(string[] args)
        {
            Days days = Days.Weekend;
            Console.WriteLine("{0} : {1}", days, (int)days);

            Console.ReadKey();
        }
    }
}